module targets.appleos;
import commons;
import hconfigs;
import common_macos;
import global_opts;

enum archFolder = isARM ? "arm64" : "x86_64";

ChoiceResult prepareAppleOS(Choice* c, ref Terminal t, ref RealTimeConsoleInput input, in CompilationOptions cOpts)
{
	prepareAppleOSBase(c,t,input);

	string out_extraLinkerFlags;
	setupPerCompiler(t, getSelectedCompiler, archFolder, out_extraLinkerFlags);
	string codeSignCommand = getCodeSignCommand(t);
	with(WorkingDir(configs["gamePath"].str))
	{
		cleanAppleOSLibFolder();
		ProjectDetails project;
		if(waitRedub(t, 
			DubArguments().configuration("appleos").compiler(getSelectedCompiler).opts(cOpts), 
			project, 
			getHipPath("build", "appleos", XCodeDFolder, "libs")) != 0)
		{
			t.writelnError("Could not build for AppleOS.");
			return ChoiceResult.Error;
		}

		injectLinkerFlagsOnXcode(t, input, out_extraLinkerFlags);
		string clean = appleClean ? "clean " : "";
		with(WorkingDir(getHipPath("build", "appleos")))
		{
			t.wait(spawnShell(
				"xcodebuild -jobs 8 -configuration Debug -scheme 'HipremeEngine macOS' " ~ clean ~ 
				" build CONFIGURATION_BUILD_DIR=\"bin\" "~ 
				codeSignCommand ~
				" && cd bin && HipremeEngine.app/Contents/MacOS/HipremeEngine")
			);
		}
	}
	return ChoiceResult.None;
}